// 封装axios
import axios from 'axios';

// 01: 创建axios 实例
// 判断是开发环境还是生产(线上)环境
let baseURL = ''
// process.env.NODE_ENV  获取当前的项目的环境变量(全局变量)
// 当运行的是 npm run dev 命令, 那么 process.env.NODE_ENV  为 'development'
// 当运行的是 npm run build 命令, 上线前进行的项目打包, 该process.env.NODE_ENV  为 'production'
// process 是nodejs 中的变量, 所以既然是变量, 就需要定义类型在ts中,所以
// 需要安装node中的的类型声明文件 npm i @types/node 这个包,该包中包含了node的类型声明文件
// 安装完需要在ts.config.json 中做一下编译配置"types": [  "node"]
console.log(11, process.env.NODE_ENV);

if (process.env.NODE_ENV == 'development') {
    baseURL = '/api'
} else {
    baseURL = 'http://kumanxuan1.f3322.net:8001'
}
const instance = axios.create({
    baseURL: baseURL,
    timeout: 5000,
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
});

//02: 配置请求拦截器 
instance.interceptors.request.use(function (config) {
    // 此处 需要将token 添加到请求头中
    if (localStorage.getItem('pinia-user')) {
        const user = JSON.parse(localStorage.getItem('pinia-user') as string)
        //console.log('user', user);
        config.headers['X-Nideshop-Token'] = user.token
    }
    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});


// 03: 配置响应拦截器
instance.interceptors.response.use(function (response) {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    return response;
}, function (error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    return Promise.reject(error);
});

export default instance